package com.sise.thread.lab01;

import java.util.Queue;

public class Producer extends Thread{
    private final Queue sharedQ; // 用于分享的队列

    public Producer(Queue sharedQ) {
        super("product");
        this.sharedQ = sharedQ;
    }

    @Override
    public void run(){
        System.out.println("this is producer");
        for(int i=0;i<4;i++){
            //生命在两个线程同时访问sharedQ（即synchronized里面的参数的时候，
            // 只有一个线程能够访问到相应的对象）
            synchronized (sharedQ){
                while(sharedQ.size()>=1){ //添加内容
                    try {
                        System.out.println("生产者的队列已经满了，请等待");
                        sharedQ.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                System.out.println("生产出来了产品"+i);
                sharedQ.add(i);
                sharedQ.notify(); //通知其他的一个线程醒来
            }
        }
    }

}
